From d8259096e7e78e768147301a3d5ef8e8afed7a99 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Tue, 15 Nov 2016 17:02:10 +0100 Subject: [PATCH] store cached fishes in ~/.cache/babl Still no fish cache path solution for win32 --- babl/babl-cache.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/babl/babl-cache.c b/babl/babl-cache.c index 42a704d..35ae260 100644 --- a/babl/babl-cache.c +++ b/babl/babl-cache.c @@ -17,13 +17,40 @@ */ #include +#include #include "config.h" #include "babl-internal.h" #include "git-version.h" static const char *fish_cache_path (void) { - return "/tmp/babl.db"; // XXX: a $HOME/.cache/babl/fishes path might be better + // FIXME: need a location for this temporary file on win32 + struct stat stat_buf; + static char resolved[4096]; + char *ret = NULL; + if (getenv ("HOME")) + { + sprintf (resolved, "%s/.cache/babl/fishes", getenv("HOME")); + } + else + { + return "/tmp/babl.db"; + } + + if (stat (resolved, &stat_buf)==0 && S_ISREG(stat_buf.st_mode)) + return resolved; + ret = strdup (resolved); + + while (strrchr (resolved, '/')) + { + *strrchr (resolved, '/') = '\0'; + mkdir (resolved, S_IRWXU); + } + + strcpy (resolved, ret); + free (ret); + + return resolved; } static char * -- 2.30.2